package com.hcnow

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.config.annotation.EnableWebMvc
import springfox.documentation.builders.ApiInfoBuilder
import springfox.documentation.builders.PathSelectors
import springfox.documentation.builders.RequestHandlerSelectors
import springfox.documentation.service.ApiInfo
import springfox.documentation.spi.DocumentationType
import springfox.documentation.spring.web.plugins.Docket
import springfox.documentation.swagger2.annotations.EnableSwagger2
import springfox.documentation.schema.ModelRef
import java.util.ArrayList
import springfox.documentation.builders.ParameterBuilder
import springfox.documentation.service.Parameter

@Configuration
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages =["com.hcnow"])
class  SwaggerConfig{

    @Bean
    fun createRestApi(): Docket {
        val tokenPar = ParameterBuilder()
        val pars = ArrayList<Parameter>()
        tokenPar.name("Authorization").description("token令牌").modelRef(ModelRef("string")).parameterType("header").required(false).build()
        pars.add(tokenPar.build())
        return Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.hcnow"))
                .paths(PathSelectors.any())
                .build()
                .globalOperationParameters(pars)
    }

    private fun apiInfo(): ApiInfo {
        return ApiInfoBuilder()
                .title("FireControlCloud")
                .version("0.1")
                .description("API Document INFO")
                .build()
    }
}